/**
 * @fileoverview   ajax/request  Ajax序列化表单
 * Created by fu.
 * Date: 12-2-1
 * Time: 上午11:52
 */
F.reg('ajax/serialize', function (f,ajax) {

    /**
     *
     * @name F.Ajax.serialize
     * @function
     * @namespace 序列化表单
     * @param form
     * @return {String}
     * @example
     * 例子：
     * 1.
     * ajax.serialize(dom.query('form')[0]);
     * //  key1=val1&key2=val2&key3=val4
     */
   ajax.serialize = function (form){
        var parts = new Array();
        var field = null;

        for (var i=0, len=form.elements.length; i < len; i++){
            field = form.elements[i];

            switch(field.type){
                case "select-one":
                case "select-multiple":
                    for (var j=0, optLen = field.options.length; j < optLen; j++){
                        var option = field.options[j];
                        if (option.selected){
                            var optValue = "";
                            if (option.hasAttribute){
                                optValue = (option.hasAttribute("value") ? option.value : option.text);
                            } else {
                                optValue = (option.attributes["value"].specified ? option.value : option.text);
                            }
                            parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(optValue));
                        }
                    }
                    break;

                case undefined:     //fieldset
                case "file":        //file input
                case "submit":      //submit button
                case "reset":       //reset button
                case "button":      //custom button
                    break;

                case "radio":       //radio button
                case "checkbox":    //checkbox
                    if (!field.checked){
                        break;
                    }
                    /* falls through */

                default:
                    parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value));
            }
        }
        return parts.join("&");
    };
    return ajax;

},{

});